﻿using Microsoft.EntityFrameworkCore.Metadata.Builders;
using Microsoft.EntityFrameworkCore;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MESMian.EntityMapping
{
    public class ProductionPlansMapping : IEntityTypeConfiguration<ProductionPlans>
    {
        public void Configure(EntityTypeBuilder<ProductionPlans> builder)
        {
            builder.ToTable("ProductionPlans");
            builder.HasKey(p => p.ProductionPlanId);
            builder.Property(p => p.ProductionPlanId)
                .HasComment("产品生产计划主键，自动编号");

            builder.Property(p => p.ProductionPlanCode)
                .IsRequired()
                .HasColumnType("varchar(20)")
                .HasComment("任务单号，不能重复");

            builder.Property(p => p.ProductionDate)
                .IsRequired()
                .HasColumnType("datetime")
                .HasComment("生产日期");

            builder.Property(p => p.DeliveryDate)
                .IsRequired()
                .HasColumnType("datetime")
                .HasComment("交货日期");

            builder.Property(p => p.ProductId)
                .IsRequired()
                .HasColumnType("varchar(20)")
                .HasComment("产品信息");

            builder.Property(p => p.TeamId)
                .IsRequired()
                .HasColumnType("int")
                .HasComment("生产班组，外键（Teams）");

            builder.Property(p => p.ProductionLineId)
                .IsRequired()
                .HasColumnType("int")
                .HasComment("生产产线，外键（ProductionLines）");

            builder.Property(p => p.ProductionTechnologyId)
                .IsRequired()
                .HasColumnType("int")
                .HasComment("使用工艺");

            builder.Property(p => p.OrderCount)
                .IsRequired()
                .HasColumnType("int")
                .HasComment("订单数量");

            builder.Property(p => p.OrderCode)
                .IsRequired()
                .HasColumnType("varchar(20)")
                .HasComment("订单编号");

            builder.Property(p => p.CustomerName)
                .IsRequired()
                .HasColumnType("varchar(100)") // Assuming a varchar type; adjust length if necessary
                .HasComment("客户名称");

            builder.Property(p => p.Priority)
                .IsRequired()
                .HasColumnType("int")
                .HasDefaultValue(0)
                .HasComment("优先级（0正常，1紧急），默认值0");

            builder.Property(p => p.ProductionPlanStatus)
                .IsRequired()
                .HasColumnType("int")
                .HasDefaultValue(0)
                .HasComment("生产计划状态（0待产，1生产中，2暂停生产，3完成），默认值0");

            builder.Property(p => p.Status)
                .IsRequired()
                .HasColumnType("int")
                .HasDefaultValue(0)
                .HasComment("数据状态（0正常，1删除），默认值0");

            builder.Property(p => p.CreateUserId)
                .IsRequired()
                .HasColumnType("int")
                .HasComment("创建人，外键（Users）");

            builder.Property(p => p.CreateTime)
                .IsRequired()
                .HasColumnType("datetime")
                .HasDefaultValueSql("GETDATE()")
                .HasComment("创建时间，默认值为当前时间");

            builder.Property(p => p.LastUpdateUserId)
                .HasColumnType("int")
                .HasComment("最后一次修改人，外键（Users）");

            builder.Property(p => p.LastUpdateTime)
                .HasColumnType("datetime")
                .HasComment("最后一次修改时间");
        }
    }

}
